ヘッダーをスキップ
Oracle TimesTen In-Memory Database C開発者およびリファレンス・ガイド
リリース6.0
B25764-02
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

XLAの概念

XLAの基本概念については、『Oracle TimesTen In-Memory Databaseアーキテクチャ概要』のイベント通知に関する章を参照してください。この項では、XLAの重要な概念について詳しく説明します。この項の内容は次のとおりです。

XLAモード: 永続および非永続

TimesTen XLAは、次のいずれかのモードで初期化できます。

XLAでレコードをトランザクション・ログから読み取る方法

アプリケーションによってTimesTenデータ・ストアが変更されると、TimesTenは、データ・ストアおよびトランザクション・コミットなどの他のイベントに対して行われた変更を示すログ・レコードを生成します。

新しいログ・レコードは、生成されると常にログ・バッファの最後に書き込まれます。

TimesTenでディスク・ベースのロギングが有効になっている場合は、メモリー内のログ・バッファからディスク上のログ・ファイルに、ログ・レコードが定期的にバッチでフラッシュされます。XLAが永続モードで初期化されている場合、XLAアプリケーションでディスクまたはメモリーに存在するログの一部に接続する必要はありません。したがって、この章で使用する「トランザクション・ログ」という用語は、トランザクション更新レコードの仮想ソースを指します。これらのレコードが物理的にメモリーに保存されているか、ディスクに保存されているかは関係ありません。

アプリケーションで、XLAを使用し、TimesTenデータ・ストアへの変更に関してトランザクション・ログを監視できます。XLAは、トランザクション・ログ全体を読み取り、ログ・レコードをフィルタ処理し、目的の表および列への変更が含まれているトランザクション・レコードのリストをXLAアプリケーションに配信します。

XLAは、レコードをディスクリート・トランザクションにソートします。複数のアプリケーションが同時にデータ・ストアを更新している場合、異なるアプリケーションのログ・レコードがログに交互配置されます。

XLAは、特定のトランザクションに関連するすべてのログ・レコードを透過的に抽出し、それらを連続するリストにしてアプリケーションに配信します。

コミット済のトランザクションのレコードのみが返されます。コミット済のレコードは、最後のコミット・レコードがトランザクション・ログに書き込まれる順序で返されます。コミットされていないデータ・ストアへの変更に関連するレコードは、XLAによってフィルタ処理されます。

変更が行われ、その後にロールバックされた場合、強制終了されたトランザクションのレコードはアプリケーションに配信されません。

これらのXLAの基本概念のほぼすべてを例3.1に示し、次にそれぞれの内容を箇条書きで示します。

例3.1

図3.1に示すトランザクション・ログを例として考えてみます。

図3.1
トランザクション・ログから抽出されるレコード

この例では、トランザクション・ログに次のレコードが含まれています。

CT1 - Application C updates row 1 of table W with value 7.7 
BT1 - Application B updates row 3 of table X with value 2 
CT2 - Application C updates row 9 of table W with value 5.6 
BT2 - Application B updates row 2 of table Y with value XYZ 
AT1 - Application A updates row 1 of table Z with value 3 
AT2 - Application A updates row 3 of table Z with value 4 
BT3 - Application B commits its transaction 
AT3 - Application A rolls back its transaction 
CT3 - Application C commits its transaction 
 

表W、YおよびZへの変更を検出するように設定されているXLAアプリケーションでは次のようになります。

BT2 and BT3 - Update row 2 of table Y with value XYZ and commit CT1 - Update row 1 of table W with value 7.7 CT2 and CT3 - Update row 9 of table W with value 5.6 and commit

この例では、次のことが示されています。

XLAおよびマテリアライズド・ビューについて

XLAを使用すると、表およびマテリアライズド・ビューの両方への変更を追跡できます。マテリアライズド・ビューによって、複数のディテール表内の選択した行および列への変更を追跡できる単一のソースが提供されます。マテリアライズド・ビューがない場合は、XLAアプリケーションで、すべてのディテール表の更新レコード(アプリケーションにとって重要ではない行および列への更新が反映されているレコードを含む)に対して監視およびフィルタ処理を行う必要があります。

一般に、表またはマテリアライズド・ビューへの変更を追跡するために使用するXLAメカニズムの間に処理上の違いはありません。

XLAでのマテリアライズド・ビューの動作の概要は、『Oracle TimesTen In-Memory Databaseアーキテクチャ概要』のイベント通知に関する章を参照してください。マテリアライズド・ビューの概要は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のSQL文に関する章のCREATE MATERIALIZED VIEWの項および『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のマテリアライズド・ビューの理解に関する項を参照してください。

XLAブックマークについて

永続トランザクション・ログの各リーダーは、ブックマークを使用して更新ログ・ストリーム内での位置を維持します。各ブックマークは、ログ順序番号(LSN)を使用してトランザクション・ログ内の更新レコードを追跡する2つのポインタで構成されています。